package com.whz.streamdemo;

import java.util.stream.Stream;
import java.util.stream.StreamSupport;

/**
 * @Author: sinosoft
 * @Description:
 * @Date: Create in 10:04 2021/5/18
 * @Modified By:
 */
public class MainTest {
    public static void main(String[] args) {
        /*
        * 实际输出 7210110810811132119111114108100 而不是 "Hello world"
        * 因为Java不支持基本类型的char Stream
        * "Hello world".chars() 返回IntStream, 于是调用了print的int覆盖
        * 修正方法是可以利用转换强制调用正确的覆盖
        * */
//        "Hello world".chars().forEach(System.out::print);
//        System.out.println();
//        "Hello world".chars().forEach(x -> System.out.print((char) x));
        /*
        * 将Stream与迭代结合起来使用
        * */
        for (ProcessHandle ph: (Iterable<ProcessHandle>) ProcessHandle.allProcesses()::iterator) {


        }
        /*
        * 可以利用for-each语句遍历任何Stream
        * */
        for (ProcessHandle ph: iterableOf(ProcessHandle.allProcesses())) {


        }
    }
    /*
    * 从Stream<E>转换到Iterable<E>的适配器
    * */
    public static <E> Iterable<E> iterableOf(Stream<E> stream) {
        return stream::iterator;
    }
    /*
    * 从Iterable<E>转换到Stream<E>的适配器
    * */
    public static <E> Stream<E> streamOf(Iterable<E> iterable) {
        return StreamSupport.stream(iterable.spliterator(), false);

    }
}
